package com.itheima.service.impl;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itheima.mapper.EnterpriseManagementMapper;
import com.itheima.pojo.HmCompanys;
import com.itheima.pojo.IfHmCompanys;
import com.itheima.service.EnterpriseManagementService;
import com.itheima.util.PageResult;
import com.itheima.util.R;
import com.itheima.util.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

@Service
public class EnterpriseManagementServiceImpl extends ServiceImpl<EnterpriseManagementMapper,HmCompanys> implements EnterpriseManagementService {

    @Autowired
    private EnterpriseManagementMapper enterpriseManagementMapper;

    //修改企业管理信息
    @Override
    public void updateManager(Integer id,HmCompanys hmCompanys) {
        HmCompanys hmCompanys1 = enterpriseManagementMapper.selectById(id);
        hmCompanys1.setIsFamous(hmCompanys.getIsFamous());
        hmCompanys1.setState(hmCompanys.getState());
        hmCompanys1.setCreatorID(hmCompanys.getCreatorID());
        hmCompanys1.setAddDate(hmCompanys.getAddDate());
        hmCompanys1.setNumber(hmCompanys.getNumber());
        hmCompanys1.setCity(hmCompanys.getCity());
        hmCompanys1.setCompany(hmCompanys.getCompany());
        hmCompanys1.setProvince(hmCompanys.getProvince());
        hmCompanys1.setRemarks(hmCompanys.getRemarks());
        hmCompanys1.setShortName(hmCompanys.getShortName());
        hmCompanys1.setTags(hmCompanys.getTags());
        enterpriseManagementMapper.updateById(hmCompanys1);
    }

    //分页查询企业信息
    @Override
    public PageResult findByPage(Integer page, Integer pagesize, IfHmCompanys ifHmCompanys) {
        //不传查询条件信息，直接分页查询
        IPage<HmCompanys> p = new Page<>(page, pagesize);
        LambdaQueryWrapper<HmCompanys> wrapper = new LambdaQueryWrapper<>();
//        //如果传了查询条件
        if (ifHmCompanys.getCity() != null || ifHmCompanys.getProvince()!=null || ifHmCompanys.getShortName()!=null || ifHmCompanys.getState()!=null||ifHmCompanys.getTags()!=null) {
            wrapper.like(HmCompanys::getTags, ifHmCompanys.getTags()).or().
                    eq(HmCompanys::getProvince, ifHmCompanys.getProvince()).or().
                    eq(HmCompanys::getCity, ifHmCompanys.getCity()).or().
                    like(HmCompanys::getShortName, ifHmCompanys.getShortName()).or().
                    eq(HmCompanys::getState, ifHmCompanys.getState());
        }
        IPage<HmCompanys> hmCompanysIPage = enterpriseManagementMapper.selectPage(p, wrapper);
        Integer counts = Integer.parseInt(p.getTotal() + "");
        Integer pages = Integer.parseInt(hmCompanysIPage.getPages() + "");
        return new PageResult(counts,hmCompanysIPage.getRecords(),page+"",pages,pagesize+"");
    }

    //企业管理删除
    @Override
    public void deleteById(Integer id) {
        //根据id删除企业管理信息
        enterpriseManagementMapper.deleteById(id);

    }

    //新建添加企业管理信息
    @Override
    public R addManager(HmCompanys hmCompanys) {
        //number,creatorID,addDate为非空约束需要补全参数
        hmCompanys.setNumber("cjuuwwwps0001tqun2ga8aw8y");
        hmCompanys.setAddDate(new Date());
        hmCompanys.setCreatorID(2);
        hmCompanys.setState(1);
        enterpriseManagementMapper.insert(hmCompanys);
        return new R("添加成功",hmCompanys.getId());
    }

    //根据id修改状态
    @Override
    public void updateById(Integer id,Integer state) {

        HmCompanys hmCompanys = enterpriseManagementMapper.selectById(id);
        hmCompanys.setState(state);
        enterpriseManagementMapper.updateById(hmCompanys);
    }
    //根据id查询企业信息
    @Override
    public HmCompanys findById(Integer id) {
        HmCompanys hmCompanys = enterpriseManagementMapper.selectById(id);
        Boolean isFamous = (Boolean) hmCompanys.getIsFamous();
        if(isFamous){
            hmCompanys.setIsFamous(1);
        }else{
            hmCompanys.setIsFamous(0);
        }
        return hmCompanys;
    }

    @Override
    public PageResult findAll(Integer pagesize) {
        IPage<HmCompanys> p=new Page<>(1,pagesize);
        IPage<HmCompanys> hmCompanysIPage = enterpriseManagementMapper.selectPage(p, null);
        //获取到集合对象
        List<HmCompanys> records = hmCompanysIPage.getRecords();
        //创建返回值对象
        PageResult pageResult = new PageResult();
        //封装数据
        pageResult.setCounts((int) hmCompanysIPage.getTotal());
        pageResult.setPage("1");
        pageResult.setPages(1);
        pageResult.setPagesize(pagesize.toString());
        pageResult.setItems(records);
        return pageResult;
    }
}
